@echo off
setlocal enabledelayedexpansion

:: 配置构建参数
set "BUILD_TAGS="
@REM -trimpath：从二进制文件中移除文件路径信息，提高安全性
set "BUILD_FLAGS= -ldflags="-s -w"" 
set "CGO_ENABLED=1"  :: 禁用CGO? 1为启用cgo, 0为禁用,todo webp package required


:: 构建主程序 (禁用CGO并优化构建)
echo 正在优化构建go-scrot.exe...
set "GOOS=windows"
set "GOARCH=amd64"
set "GOGC=off"  :: 禁用垃圾回收，提高构建速度
set "GOMAXPROCS=%NUMBER_OF_PROCESSORS%"  :: 使用所有CPU核心

go build -v %BUILD_FLAGS% -tags "%BUILD_TAGS%" .
if %errorlevel% neq 0 (
    echo 构建go-scrot.exe失败
    pause
    exit /b 1
)

:: 重置环境变量
set "GOGC="
set "GOMAXPROCS="

:: 构建GIF支持程序
echo 正在构建gif-rec.exe...
cd gif_support
call build_mingw64.cmd
if %errorlevel% neq 0 (
    echo 构建gif-rec.exe失败
    cd ..
    pause
    exit /b 1
)
cd ..

:: 构建包装器
echo 正在构建scrot.exe包装器...
cd wrapper
g++ scrot.cpp -o scrot.exe -O3 
if %errorlevel% neq 0 (
    echo 构建scrot.exe失败
    cd ..
    pause
    exit /b 1
)
cd ..

:: 移动文件到wrapper目录
echo 整理文件...
move /y go-scrot.exe wrapper >nul
move /y gif_support\gif-rec.exe wrapper >nul

echo 安装完成，可在wrapper目录查看以下文件：
echo - scrot.exe (包装器)
echo - go-scrot.exe (截图程序)
echo - gif-rec.exe (GIF录制程序)

:: 获取GOBIN路径
for /f "delims=" %%i in ('go env GOBIN') do set "GOBIN=%%i"
if "!GOBIN!"=="" (
    for /f "delims=" %%i in ('go env GOPATH') do set "GOBIN=%%i\bin"
)

:: 询问是否安装到GOBIN
set /p "install=是否将程序安装到GOBIN目录(!GOBIN!)? [y/N] "
if /i "!install!"=="y" (
    echo 正在复制文件到!GOBIN!...
    if not exist "!GOBIN!" (
        mkdir "!GOBIN!"
        if %errorlevel% neq 0 (
            echo 创建GOBIN目录失败
            pause
            exit /b 1
        )
    )
    copy /y wrapper\scrot.exe "!GOBIN!" >nul
    copy /y wrapper\go-scrot.exe "!GOBIN!" >nul
    copy /y wrapper\gif-rec.exe "!GOBIN!" >nul
    if %errorlevel% equ 0 (
        echo 成功安装到GOBIN目录
        echo 可直接在命令行使用 scrot 命令
    ) else (
        echo 安装到GOBIN目录失败，请手动复制
    )
) else (
    echo 已跳过安装到GOBIN目录
)
